//通用模块,文件操作
var multer = require('multer');
var fs = require("fs");
var configLib = require("../config.lib.js");
var newsModel = require("../models/news.model");

module.exports = {
    upload_file: function(req, res, next){
        //指定上传封面
        
        var cover_storage = multer.diskStorage({
            destination: function (req, file, cb){
                cb(null, './dist' + configLib.imagePathFormat);
            },
            filename: function (req, file, cb) { 
                cb(null, Date.now() + '-' + file.originalname);
            } 
        });
        
        var cover_multer = multer({ 
            storage: cover_storage,
        }).single('cover');

        cover_multer(req,res, function(err){
            //保存文章内容为文件
            let values = JSON.parse(req.body.values);
            let filename = './dist' + configLib.newsPathFormat + values.title + "-" + values.author + "-" + values.contentName +'.txt';
            if(err){
                console.log(err);
                return;
            }
            console.log("上传文件",values);
            fs.writeFile(filename, values.content, {flag:'w',encoding:'utf-8',mode:'0666'},function(err){
                if(err){
                    console.log("文件写入失败",err);
                    res.json({
                        success:false,
                        description :" 文件写入失败",
                        data:{}
                    })
                }else{
                    next();
                    //封面路径和文件路径存到数据库里面去，再返回。
                }
            })
      　});
    },
    update_file:function(req, res, next){
        console.log('更新');
        //封面更新
        var cover_storage = multer.diskStorage({
            destination: function (req, file, cb){
                cb(null, './dist' + configLib.imagePathFormat);
            },
            filename: function (req, file, cb) { 
                cb(null, Date.now() + '-' + file.originalname);
            } 
        })
        //如果不存在,好像不会保存。新上传的封面才会改变。就先这样
        var cover_multer = multer({ 
            storage: cover_storage,
        }).single('cover');
        cover_multer(req, res, function(err){
            let body = req.body;
            if(err){
                console.error(error);
            }
            else{
                //更新文件，根据传过来的id获取到文件存的地方，修改。
                if(body.id){
                    newsModel.find({_id: body.id},function(err, data){
                        let values = JSON.parse(body.values);
                        console.log('更新文件',  values);
                        if(data){
                            data = data[0];
                            let filename = data.content;
                            fs.writeFile(filename, values.content, {flag:'w',encoding:'utf-8',mode:'0666'},function(err){
                                if(err){
                                    console.error("文件更新写入失败",err);
                                    res.json({
                                        success:false,
                                        description :" 文件更新写入失败",
                                        data:{}
                                    })
                                }else{
                                //重新命名现在的文件，为当前的“标题-作者-时间戳”，时间戳不修改。
                                    let filenamearr = filename.split("/"),
                                        realName = filenamearr[filenamearr.length - 1].split("-");

                                    realName[0] = values.title;
                                    realName[1] = values.author;
                                    filenamearr[filenamearr.length - 1] = realName.join("-");
                                    fs.rename(filename, filenamearr.join("/"), function(err){
                                        if(err){
                                            console.error(err);
                                            res.json({
                                                success: false,
                                                description:"文件重命名出错",
                                                data:{}
                                            })
                                        }else{
                                            next();
                                        }
                                    });
                                }
                            })
                            
                        }else{
                            res.json({
                                success:false,
                                description :" 未找到文件存储的位置",
                                data:{}
                            })
                        }
                    });
                }else{
                    res.json({
                        success:false,
                        description:"后台出错,没有传id给后台",
                        data:{}
                    })
                }
            }
        })
    }
};